"""
日志配置模块
为应用设置日志记录功能，包括控制台和文件日志
"""
import os
import logging
from logging.handlers import RotatingFileHandler


def setup_logging(app):
    """
    设置应用的日志配置
    
    参数:
        app: Flask应用实例
    """
    # 创建日志目录
    log_dir = os.path.join(app.root_path, '..', 'logs')
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
        
    # 设置日志级别
    log_level = app.config.get('LOG_LEVEL', logging.INFO)
    
    # 定义日志格式
    formatter = logging.Formatter(
        '%(asctime)s [%(levelname)s] [%(name)s] - %(message)s'
    )
    
    # 设置控制台日志处理器
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)
    console_handler.setLevel(log_level)
    
    # 设置文件日志处理器
    file_handler = RotatingFileHandler(
        os.path.join(log_dir, 'kj_erp.log'),
        maxBytes=10*1024*1024,  # 10MB
        backupCount=5
    )
    file_handler.setFormatter(formatter)
    file_handler.setLevel(log_level)
    
    # 设置错误日志处理器
    error_handler = RotatingFileHandler(
        os.path.join(log_dir, 'error.log'),
        maxBytes=10*1024*1024,  # 10MB
        backupCount=5
    )
    error_handler.setFormatter(formatter)
    error_handler.setLevel(logging.ERROR)
    
    # 移除默认处理器并添加新的处理器
    app.logger.handlers = []
    app.logger.addHandler(console_handler)
    app.logger.addHandler(file_handler)
    app.logger.addHandler(error_handler)
    app.logger.setLevel(log_level)
    
    # 如果是调试模式，设置SQLAlchemy日志
    if app.debug:
        logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
    
    app.logger.info('日志设置完成') 